#include <func.h>
void deleteDir(const char* path);
int main(int argc, char *argv[])
{
    // ./deleteDir dir
    ARGS_CHECK(argc, 2);
    deleteDir(argv[1]);
    return 0;
}
void deleteDir(const char* path) {
    //如果打开目录。该目录是空的，那就直接删除，如果目录不为空，那么就把文件删除后，再次删掉目录文件
    // 打开目录
    // 打开src目录
    DIR*pdir = opendir(path);
    ERROR_CHECK(pdir,NULL,"opendir");
    errno = 0;
    // 遍历目录流
    struct dirent*pdirent;
    // 遍历目录流，依次删除每一个目录项
    while ((pdirent = readdir(pdir)) != NULL) {
        // 忽略.和..
        char*name = pdirent->d_name;
        if(name[0]=='.')
        {
            continue;
        }
        //在dst目录下创建该目录
        char srcpath[1024];
        //path/name 新目录 两边都更新目录 递归进去
        sprintf(srcpath,"%s/%s",path,name);//进入下一个目录       
        //遇到目录名进行拼接
        // 如果该目录项是目录，则调用deleteDir递归删除
        if(pdirent->d_type == DT_DIR)
        {
            //进入下一个目录
            deleteDir(srcpath);

        }
        // 如果该目录项是文件，则调用unlink删除文件
        else if(pdirent->d_type == DT_REG)
        {
            unlink(srcpath);//减少硬连接
        }   
    }       
    // 目录为空了，可以删除该目录了
    rmdir(path);
 // 关闭目录流
    if(errno)
    {
        closedir(pdir);
        perror("readdir");
        exit(1);
    }
    closedir(pdir); 
} 